我們透過簡單的regression來認識如何設置model及如何使用pytorch設置loss function及updata參數
先設個範例資料,總共4筆資料
x為輸入,特徵值有兩個
y為要訓練的目標
設置模型時會先import torch.nn並命名為nn
設置模型:
建立一個class並繼承nn.Module
在__init__需輸入super(Model,self).init()
設置self.net為我們自己的模型
透過nn.Sequential方法來建立,之後在後方傳入你想要的模型樣子
nn.Linear用來加入線性的模型,後方參數傳入模型輸入值與輸出值
第一個輸入並符合輸入資料的資料個數,所以我一開始先傳入x.shape[1]
線性模型後接上activation function,這裡我都使用ReLU
def forward後方必須傳入輸入參數,會回傳model計算結果
設置迭代次數及learning rate:
n_iter為我們想要訓練的次數
learning rate在這裡設置,之後會傳入optimizer後方參數,等一下你就看得到了
設置loss function及optimizer:
我將critirion設為loss function的變數名稱,後方傳入pytroch內已有的方法nn.MSELoss()
表示此loss function是計算mean-square error
optimizer設為updata參數的變數名稱,後方傳入pytorch內已有的方法,這裡我選擇adam演算法
後方需傳入model參數及learning rate
開始訓練資料
pre為model計算完結果
將pre與訓練目標y傳入critirion來算出loss
optimizer.zero_grad()一定要傳入,要歸零上一次的微分結果
loss.backward算出這次的微分結果
optimizer.step()根據傳入的演算法updata參數,這裡就是使用上面設置的adam演算法
查看訓練結果
可看出我們訓練結果已與目標非常相近
送上colab連結,可自行在上面多做點練習更加熟悉pytorch
https://colab.research.google.com/drive/1CiullFEJa1vGMrH-qNeWgDUwXHJ_PrfB?usp=sharing